#pragma once
#include <Windows.h>

#include <string>
using std::string;

class IBaseInterface
{
private:
	string m_szSpellName;
	string m_szEnemyName;
public:
	virtual ~IBaseInterface(void) = 0 {}

	virtual void Update(float fElapsedTime) = 0;
	virtual void Render(void) = 0;

	virtual void AddRef(void) = 0;
	virtual void Release(void) = 0;

	virtual int GetType(void) = 0; 
	virtual RECT GetRect() = 0;

	virtual unsigned int  GetOMGroupID() const = 0;		

	virtual bool CheckCollision(IBaseInterface * pBase )=0;

	// sort of a hack
	// this base class needs to know this function for downcasting (upcasting?)
	// intentionally not virtual or pure virtual because I don't want every derived 
	// class implementing its own version of this
	// used in the the object manager's PrintToConsole()
	string GetEnemyName() const			{ return m_szEnemyName; }

	// sort of a hack
	// this base class needs to know this function for downcasting (upcasting?)
	// intentionally not virtual or pure virtual because I don't want every derived 
	// class implementing its own version of this
	// used in the the object manager's PrintToConsole()
	string GetSpellName() const			{ return m_szSpellName; }
};